<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<!-- <script>
    //ES6数组新增的方法:map、filter、every、find、forEach等等
    //ES6中数组新增的方法:reduce
    //第一步:研究reduce基本语法
    //找到规律1:reduce回调执行的次数为,数组length - 1
    //找到规律2:回调有第一个参数   1 undfined undefined
    //找到规律3:回调函数第二个参数 2 3 4 


    //形参a:起始值为数组第零项，a每一次回调函数返回结果，会重新赋值给a
    //形参b:当前回调在遍历数组里面元素，索引值为1的元素开始的
    let arr = [1, 2, 3, 4];
    let result = arr.reduce((a, b) =>a + b);
    console.log(result);
    //第一次执行:a=1     b=2    返回值3
    //第二次执行:a=3     b=3   返回值6
    //第三次执行:a=6     b=4   返回结果10  
    //reduce函数执行一次:返回结果最后一次计算出结果


    let arr1 = [46, 72, 32, 12];
    let result1 = arr1.reduce((a, b) => {
        return a > b ? a : b;
    });
    console.log(result1);
    //第一次执行:a=46  b=72   返回结果72
    //第二次执行:a=72  b=32   返回结果72
    //第三次执行:a=72  b=12   返回结果72 

</script> -->
<script>
    let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; //[2,4,6,8,10]
    //reduce第二个参数:可以理解为给数组头部新增一个元素【a:起始值】
    let result = arr.reduce((a, b) => {
        if (b % 2 == 0) {
            a.push(b);
        }
        return a;
    }, []);

    console.log(result);
    //第一次执行:a=[]  b = 1  返回结果 []
    //第二次执行:a=[]  b = 2  返回结果 [2]
    //第三次执行:a=[2] b = 3  返回结果 [2]
    //第四次执行:a=[2] b = 4  返回结果【2,4】

</script>